# encoding: utf-8
"""
@author: 夏洛
@QQ: 1972386194
@file: 01-test.py
"""

import cv2 as cv


# 首先将图片进行高斯模糊处理，高斯模糊的主要作用是减少图像的噪声，用于预处理阶段。
image_path = './jd.png'

image = cv.imread(image_path)
blurred = cv.GaussianBlur(image, (5, 5), 0)
# cv.imshow("blurred", blurred)
# cv.imwrite('1.png', blurred)  # 保存图像文件



# 接着用Canny边缘检测到得到一个包含“窄边界”的二值图像。所谓二值图像就是黑白图，只有黑色和白色。
canny = cv.Canny(blurred, 200, 400)
cv.imshow("canny", canny)
# cv.imwrite('2.png', canny)  # 保存图像文件


def test3():
    contours, hierarchy = cv.findContours(canny, cv.RETR_CCOMP, cv.CHAIN_APPROX_SIMPLE)
    for i, contour in enumerate(contours):  # 所有轮廓
        x, y, w, h = cv.boundingRect(contour)  # 外接矩形
        cv.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
    cv.imwrite('3.png', image)  # 保存图像文件

test3()